import { Injectable } from '@angular/core'

@Injectable({
    providedIn: 'root'
})
export class FileUploadService {

    constructor() { }
    // 文件上传
    handleFileUpload(fileUploadInputDom: any, cb: any) {

        const that = this
        // 解决同一文件不能连续上传问题
        fileUploadInputDom.nativeElement.setAttribute('type', 'text')
        fileUploadInputDom.nativeElement.setAttribute('type', 'file')
        // 调用文件上传弹框
        fileUploadInputDom.nativeElement.click()
        // 监听改变事件
        fileUploadInputDom.nativeElement.onchange =  function() {
            // 定义文件流对象
            const filereader = new FileReader()
            // 获取文件相关信息 name size type等
            const file = this.files[0]
            // 通过判断文件大小判断是否为空文件
            if (this.files[0]) {
                if (this.files[0].size === 0) {
                    alert('您上传的文件内容为空, 请重新上传！')
                    return
                }
            }
            // 获取文件名称（全名）
            const fileName = file.name
            // 文件名称以最后一个.号为分割
            const index = fileName.lastIndexOf('.')
            // 获取文件后缀名
            const base64fileType = fileName.substring(index + 1, fileName.length)
            // 获取文件名（.的前部分）
            const docName = fileName.substring(0, index)
            // 将文件转换为文件流
            const fileStream = filereader.readAsDataURL(file)
            filereader.onload = () => {
                // 获取base64值
                const fileStreamBase64 = filereader.result

                cb({ Files: file, File: fileStreamBase64, FileType: base64fileType, name: docName + '.' + base64fileType,
                size: file.size, docName, fileStream: filereader.result })
            }

        }

    }

}

